package com.xbongbong.admin.domain.entity;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xbongbong.paas.toolbox.wrap.Entity;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;


/**
 * @auther: xingxing.xiao
 * @date: 2020/3/6 006 11:30
 */
@Setter
@Getter
@ToString
public class MirrorChartEntity extends Entity {
    private static final long serialVersionUID = 4059474442848527327L;
    /**
     * 主键id
     */
    private Long id;
    /**
     * 镜像id
     */
    private Long mirrorId;
    /**
     * 来源报表id
     */
    private Long sourceChartId;
    /**
     * 公司id
     */
    private String corpid;
    /**
     * 分类id数组
     */
    private JSONArray category;
    /**
     * 来源分类id数组
     */
    private JSONArray sourceCategory;
    /**
     * 指标类型：1系统指标,2自定义指标
     */
    protected Integer statisticsType;
    /**
     * 系统指标枚举code，用于直接定位系统指标，处理特殊逻辑更方便
     */
    private String systemCode;
    /**
     * 前端生成的唯一标识（保存报表是批量保存，需要把新增后生成的主键id与该值对应）
     */
    private String uuid;
    /**
     * 是否开启：0关闭,1开启
     */
    protected Integer enable;
    /**
     * 报表类型，用枚举维护
     */
    protected Integer chartType;
    /**
     * 是否发布到首页：0否,1是
     */
    protected Integer publish;
    /**
     * 报表名称
     */
    private String name;
    /**
     * 报表名称
     */
    private String oldName;
    /**
     * 指标简介
     */
    private String memo;
    /**
     * 指标/图表图标
     */
    private String icon;
    /**
     * 颜色，16进制色，如 #FF0000
     */
    private String color;
    /**
     * 1单表，0多表
     */
    private Integer single;
    /**
     * 业务类型,主要用于对系统指标的业务分类做标记，格式为：[1,2]
     */
    private String refTypes;
    /**
     * 统计方式：0系统指标按自己特定规则,1求和(SUM),2求平均值(AVG),3求总数(COUNT)，4公式计算（用枚举标识--方便维护）
     */
    private Integer statisticsWay;
    /**
     * 单位（系统指标的单位可默认，如合同金额为“元”）
     */
    private String unit;
    /**
     * 排序字段
     */
    private Integer sort;
    /**
     * 创建者id
     */
    private String creatorId;
    /**
     * 创建时间
     */
    private Long addTime;
    /**
     * 更新时间
     */
    private Long updateTime;
    /**
     * 删除标记
     */
    private Integer del;
    /**
     * 报表权限
     */
    private JSONObject permissions;
    /**
     * 用于存放报表的共用配置：操作权限，表头冻结，格式：[{}]
     */
    private JSONObject  explains;
    /**
     * 筛选条件 格式：[{}]
     */
    private JSONArray filter;
    /**
     * 分类：X轴上的分组，单选，格式为{"attr": "name", "sumWay": 1, "attrType":1}
     */
    private JSONArray chartClassify;
    /**
     * 系列：在分类的基础上，对分类字段的值再次进行分组，可多选.格式为：[{"attr": "name", "sumWay": 1, "attrType":1}]
     */
    private JSONArray  chartSeries;
    /**
     * 值：分类与系列组成分组，指标为需要统计的数据，值与Y轴对应；只有数字字段可以作为指标，另外系统自带的计数也可以；可多选，格式为：[{"attr": "name", "sumWay": 1, "attrType":1}]
     */
    private JSONArray  chartValue;
    /**
     * 联动：关联其他报表id数组，即当前表的主键，格式为：[1,2]。数据查询表不能主动联动
     */
    private JSONArray linkIds;
    /**
     * 单个图表的查询条件
     */
    private JSONArray search;
    /**
     * 主表数据来源，只能有一个，代表主驱动表 格式为：{"appId":1,"menuId":2,"linkAttr":"text_1"}
     */
    private JSONObject  driverSources;
    /**
     * 从表数据源，最多两个 [{"appId":1,"menuId":2,"linkAttr":"text_1"}, {"appId":2,"menuId":1,"linkAttr":"text_1"}]
     */
    private JSONArray slaveSources;
    /**
     * 展示字段[{"name":"分类id","attr":"categoryName"}]
     */
    private JSONArray displayAttr;
    /**
     * 汇总字段[{"name":"","attr":""}]
     */
    private JSONArray summaryAttr;
    /**
     * 分组字段[{"name":"","attr":""}]
     */
    private JSONArray groupAttr;
    /**
     * 统计的字段，{"name":"字段名","attr":"attr1"}。统计的数字型业务字段，如果是获取指标值(且不是求总数)的，则该条件必选
     */
    private JSONObject sourceAttr;
    /**
     * 归属人字段，{"name":"","attr":"userId"}。按照哪一个归属字段统计（如创建人、签订人等）
     */
    private JSONObject belongAttr;
    /**
     * 时间字段，{"name":"","attr":""}。按照哪一个时间范围字段进行统计（如创建时间、自定义的时间类型字段）
     */
    private JSONObject timeAttr;
    /**
     * 可展示的图表类型列表--主要兼容首页系统图表展示
     * [1,2]
     */
    protected JSONArray showTypes;

    /**
     * 穿透展示字段[{"name":"","attr":""}]
     */
    private JSONArray penetrateAttr;
    /**
     * formId:{originalAttr:attr}
     *{"5093": {"text_52": "text_2"}, "5098": {"num_1": "num_1", "text_1": "text_1", "serialNo": "serialNo"}}
     */
    private JSONObject formIdAttr;
    /**
     * 行分组字段[{"name":"","attr":""}]
     */
    private JSONArray rowGroupAttr;

    /**
     * 列分组字段[{"name":"","attr":""}]
     */
    private JSONArray colGroupAttr;
    /**
     * 汇总方式 0:小计 1：总计
     */
    private Integer sum;
}
